<?php

namespace App\Http\Controllers;

use EasyWeChat\Kernel\Messages\Image;
use Illuminate\Http\Request;
use Log;
use EasyWeChat\Kernel\Messages\Text;
use App\Models\Message;
use App\Models\User;

class OfficialController extends Controller
{
    public function index()
    {
        $app = app('wechat.official_account');
        $app->server->push(function ($message) {
            switch ($message['MsgType']) {
                case 'event':
                    return $this->eventMessageHandle($message);
                    break;
                case 'text':
                    return $this->textMessageHandle($message);
                    break;
                default:
                    return '您说什么,我听不懂';
                    break;
            }
        });

        return $app->server->serve();
    }

    protected function eventMessageHandle($message)
    {
        $this->saveMessage($message);
        switch ($message['Event']) {
            case "subscribe":
                return $this->subscribeEventHandel($message);
                break;
            case "unsubscribe":
                return $this->subscribeEventHandel($message);
                break;
            case 'CLICK':
                return $this->clickEventHandel($message);
                break;
            default:
                return '我猜你是想我了!';
                break;
        }
    }

    protected function textMessageHandle($message)
    {
        $this->saveMessage($message);
        $content = strtolower($message['Content']);
        $keyContents1 = $this->getExactMatchText();
        foreach ($keyContents1 as $row) {
            if ($content == $row['key'] || in_array($content, explode(";", $row['key']))) {
                if (isset($row['text']) && $row['text']) {
                    return $row['text'];
                } else if (isset($row['image']) && $row['image']) {
                    return new Image($row['image']);
                }
            }
        }
        return $this->getOtherTextMessage();
    }

    protected function subscribeEventHandel($message)
    {
        $userObj = User::firstOrCreate(['openid' => $message['FromUserName']]);
        if (!$userObj->nickname) {
            $app = app('wechat.official_account');
            $userRemote = $app->user->get($message['FromUserName']);
            if ($userRemote) {
                $userObj->subscribe = 1;
                $userObj->nickname = isset($userRemote['nickname']) ? $userRemote['nickname'] : "";
                $userObj->language = $userRemote['language'];
                $userObj->sex = $userRemote['sex'];
                $userObj->city = $userRemote['city'];
                $userObj->country = $userRemote['country'];
                $userObj->headimgurl = $userRemote['headimgurl'];
                $userObj->subscribe_time = $userRemote['subscribe_time'];
                $userObj->remark = $userRemote['remark'];
                $userObj->tagid_list = json_encode($userRemote['tagid_list']);
                $userObj->groupid = $userRemote['groupid'];
                $userObj->subscribe_scene = $userRemote['subscribe_scene'];
                $userObj->qr_scene = $userRemote['qr_scene'];
                $userObj->qr_scene_str = $userRemote['qr_scene_str'];
                $userObj->save();
            }
        } else {
            $userObj->subscribe = 1;
            $userObj->save();
        }
        return $this->getSubscribeText();
    }

    protected function unsubscribeEventHandel($message)
    {
        $userObj = User::updateOrCreate(['openid' => $message['FromUserName']], ['subscribe' => 0]);
        return "希望下次再来";
    }

    protected function clickEventHandel($message)
    {
        if (!isset($message['EventKey'])) {
            Log::error("没定义的EventKey");
            return ".......";
        }
        if (strpos($message['EventKey'], 'qrscene_') !== false) {
            return $this->qrsceneHandel($message);
        }
        if (strpos($message['EventKey'], 'MenuClick_') !== false) {
            return $this->clickMenuHandel($message);
        }
        return ".......";
    }

    protected function saveMessage($message)
    {
//        $messageObj = new Message();
//        $messageObj->ToUserName = $message['ToUserName'];
//        $messageObj->FromUserName = $message['FromUserName'];
//        $messageObj->CreateTime = $message['CreateTime'];
//        $messageObj->MsgType = $message['MsgType'];
//        unset($message['ToUserName'], $message['FromUserName'], $message['CreateTime'], $message['MsgType']);
//        $messageObj->Content = json_encode($message);
//        $messageObj->save();
    }

    protected function qrsceneHandel($message)
    {
        $back = '......';
        return $back;
    }

    protected function clickMenuHandel($message)
    {
        $back = '';
        $key = $message['EventKey'];
        Log::info($key);
        switch ($key) {
            case 'MenuClick_Liao001':
                Log::info('case MenuClick_Liao001');
                $back = '面对镜头的第一个问题 "你为啥叫勾正数据" "这个，等等，科普下，在古代沟是10的32次方,正是10的40次方,沟正表示海量数据，即简化为勾正，寓意与时俱进，拥有庞大的数据" "还有啥问题，欢迎私撩"';
                break;
            default:
                $back = '......';
                break;
        }
        return $back;
    }

    protected function getHelpMessage()
    {
        return <<<EOT
1:了解"营销社群"基础信息;
2:"营销社群"洞察报告;
3:"营销社群"运营案例;
4:如何使用"营销社群"服务;
5:如何进行商务合作?
还不快戳戳键盘，如果以上都木有需要帮助的话，请与我们联系:15101195297
EOT;
    }

    protected function getOtherTextMessage()
    {
        $help = $this->getHelpMessage();
        return "勾正菌猜你是想了解最新的勾正动态，本次勾正菌为你带来的是营销社群， OTT广告营销如何覆盖\"TA\".回复:\n" . $help;
    }

    protected function getSubscribeText()
    {
        return "终于等到你，感谢对勾正菌的关注与支持，勾正数据是一家致力于智能大屏领域的第三方大数据公司，面向全产业链上下游，提供以“数据+技术+运营解决方案”全生态的服务模式。\n勾正数据已面向客户提供服务的有：勾正睛准、勾正亿视、勾正大数、勾正全析等智能大屏系列产品。\n如需了解勾正睛准，后台回复“睛准”；\n如需了解勾正亿视，后台回复“亿视”；\n如需了解勾正大数，后台回复“大数”；\n如需了解勾正全析，后台回复“全析”\n更多合作请与我们联系:wangky@gzads.com";
    }

    protected function getExactMatchText()
    {
        return [
            [
                "key" => "喜欢;转载",
                "text" => "感谢你的关注，如需转载报告，请回复微信号名称，获得权限，或与勾正君联系:15101195297",
            ],
            [
                "key" => "合作",
                "text" => "你好，关于合作方面的事情，请电话联系:15101195297",
            ],
            [
                "key" => "会议",
                "text" => "你好，我们的行业峰会正在筹备中，欢迎加入我们一起，如有兴趣请电话联系:15101195297",
            ],
            [
                "key" => "转载",
                "text" => "您好,如需转载，1、后台回复或留言:微信ID 2、与我们联系电话:15101195297  3、微信号:Keddy-wang",
            ],
            [
                "key" => "春晚",
                "text" => "感谢您的关注，勾正数据联合AdMaster发布的报告，请下载本链接:链接: https://pan.baidu.com/s/1Muq7LYWJOYbqH1VIFZy2vA 密码: j25n，春晚专题报告下载链接:https://pan.baidu.com/s/1NiEBP_ysEhShfBOHDkjolg 密码: jdxi",
            ],
            [
                "key" => "1季度报告;Q1报告;Q1;报告",
                "text" => "终于等到你啦，本次勾正菌为你带来的是，最新出炉的2018年Q1季度报告，详细请下载链接: https://pan.baidu.com/s/1-pM4xrF97mhrFj90T4hTIg 密码: 553g",
            ],
            [
                "key" => "iptv",
                "text" => "感谢关注勾正数据，《IPTV，数\"领\"运营》链接: https://pan.baidu.com/s/1GQoq0QI2SAd2e9Z6D8Ua_A 密码: pifp",
            ],
            [
                "key" => "营销社群;社群营销;营销",
                "text" => "1、感谢您关注勾正数据，如需下载《智能营销大屏升级》报告请戳链接: https://pan.baidu.com/s/1GqdZU-_IuxMyOV_sPQmmXA 密码: umud \n2、感谢关注勾正数据，勾正数据（GozenData）是一家致力于智能大屏领域的大数据平台公司，数据覆盖规模和挖掘深度居于行业领先地位。公司秉承\"数据连接未来\"的理念，坚持以\"用数据为家庭创造品质生活\"为使命，面向全产业链上下游，提供以\"数据+技术+运营解决方案\"全生态的服务模式。 本次勾正君为你带来的是一份蕴藏巨大价值的消息，OTT广告营销如何覆盖\"TA\" 回复:\n " . $this->getHelpMessage(),
            ],
            [
                "key" => "完整版",
                "text" => "最新出炉的5月OTT大屏数据报告，下载链接: https://pan.baidu.com/s/1EjSR7eR-K2r63aPGJsLOqQ 密码: qxx4",
            ],
            [
                "key" => "iptv月报",
                "text" => "您好，感谢关注勾正菌，如需查看完整版，请戳：http://v.lmtw.com/mzs/content/detail/id/156321",
            ],
            [
                "key" => "ott行业发展报告;2017年报;ott;ott报告;ott年报",
                "text" => "感谢您关注勾正菌，《2017年度OTT行业发展报告》如需下载，请戳链接: https://pan.baidu.com/s/1ERgW0XmKLR_QPHFwz7j2cQ 密码: h66x，欢迎分享哦"
            ],
            [
                "key" => "粽子",
                "text" => "请收下勾正菌特意准备的端午小礼品~链接: https://pan.baidu.com/s/18QBFRhJrLdMheFvvR0VwlA 口令: ixn6"
            ],
            [
                "key" => "世界杯",
                "text" => "智能大屏大数据公司勾正数据，联合独立第三方数据技术公司AdMaster、智能电视应用市场当贝市场共同推出《2018世界杯OTT大屏用户使用及广告市场研究报告》，用数据揭秘世界杯期间智能大屏的影响力。报告下载链接: https://pan.baidu.com/s/1RsVBTkt7Ti4-KIZqcARXJw 密码: id2p",
            ],
            [
                "key" => "6月;OTT",
                "text" => "勾正数据将基于7900万台智能电视终端，从四个方面，为您详细剖析6月OTT大屏情况，详情请戳：https://pan.baidu.com/s/1izV-M2raix-Z6pq086rLsg 密码: ktu4",
            ],
            [
                "key" => "9月;8月;7月;报告",
                "text" => "感谢关注勾正菌，为您奉上姗姗来迟的《2018年8月&9月智能电视大数据报告》，链接：https://pan.baidu.com/s/1DJFwnJSRdMOXMizft9xPIQ 提取码: fkdn，如有其他问题欢迎随时与本菌互动哦"
            ],
            [
                "key" => "睛准",
                "text" => "勾正睛准（Gozen Insight），洞察用户需求，深入感知用户偏好，为客户提供OTT/TV精准营销决策参考。\n更多资料:【洞察+连接+赋能  升级家庭智能营销 暨勾正睛准&勾正大数产品发布会】:请戳 http://product.gz-data.com"
            ],
            [
                "key" => "亿视",
                "text" => "勾正亿视（Gozen Viewer），实时洞察大屏观众在线情况，关注内容趋势变化， 为客户提供内容评估和预测依据，降低内容制作风险，提高营销用户转化率。\n本产品即将于年底发布，敬请期待！"
            ],
            [
                "key" => "大数",
                "text" => "勾正大数（Gozen D-Bank），赋能跨屏营销打通， 为行业构建真正意义上的家庭营销闭环，助力投放策略升级。\n更多资料:【洞察+连接+赋能  升级家庭智能营销 暨勾正睛准&勾正大数产品发布会】:请戳 http://product.gz-data.com"
            ],
            [
                "key" => "全析",
                "text" => "勾正全析（Gozen Analytics），支持客户全面掌握市场发展行情，实时了解用户活跃动态，精准识别用户收视内容，灵活调整海报投放策略，建立全面且快捷的数据运营系统和数据研究及运营能力赋能运营决策分析。\n本产品将于10月25日发布，敬请期待！"
            ],
            [
                "key" => "峰会;2018峰会;会议",
                "text" => "dear ，2018中国OTT行业发展峰会，众多嘉宾带来精彩分享，勾正菌为您奉上大会精彩内容，请下载本链接哦：https://pan.baidu.com/s/1vjfqjcvQkCNywBH9RY-cbA 提取码：titw "
            ],
            [
                "key" => "峰会",
                "text" => "欢迎关注勾正菌一年一度的OTT行业峰会，近期将会发布会议报名通道，请持续关注我哦"
            ],
            [
                "key" => "10月报;10月",
                "text" => "感谢关注勾正数据，10月OTT大屏报告下载链接: https://pan.baidu.com/s/15CurudnD5JECuH1KIP8PFw 提取码：9mx8"
            ],
            [
                "key" => "月报;11月报;11月",
                "text" => "感谢关注勾正数据，11月OTT大屏报告下载链接: https://pan.baidu.com/s/1GzyWegAbYZUd_YVQPd5koQ 提取码：jbpl"
            ]
        ];
    }
}
